The present invention relates to data storage systems, and more specifically, this invention relates to solid-state drives separately allocating different write operations for improved separation of data and thereby reduced write amplification.
Performance characteristics of conventional NAND flash-based solid state drives (SSDs) are fundamentally different from those of traditional hard disk drives (HDDs). Data in conventional SSDs is typically organized in pages of 4, 8, or 16 KB sizes. Moreover, page read operations are typically one order of magnitude faster than write operations and latency neither depends on the current nor the previous location of operations.
However, memory locations must be erased in blocks prior to being written to. The size of an erase block unit is typically 256 pages and the erase operations takes approximately one order of magnitude more time than a page program operation. Due to the intrinsic properties of NAND flash, SSDs write data out-of-place whereby a mapping table maps logical addresses of the written data to physical ones. This mapping table is typically referred to as the Logical-to-Physical Table (LPT).
As flash cells exhibit read errors and/or failures due to wear or other reasons, additional redundancy is used within flash pages as well as across flash chips (e.g., RAID-5 or RAID-6 like schemes), the additional redundancy within flash pages possibly including error correction code (ECC) which, for example, may include BCH. While the addition of ECC in pages is relatively straightforward, the organization of flash blocks into RAID-like stripes is more complex. For instance, individual blocks are retired over time which requires either to reorganize the stripes, or to reduce the capacity of the stripe. As the organization of stripes together with the LPT defines the placement of data, SSDs utilize a Log-Structured Array (LSA) architecture, which combines these two methods.
The LSA architecture relies on out-of-place writes. In this approach, a flash page overwrite will result in writing the flash page data to a new location in flash, marking the old copy of the flash page data as invalid, and then updating the mapping information. Due to the limitations of current NAND flash technology, an invalidated data location cannot be reused until the entire block it belongs to has been erased. Before erasing, though, the block must undergo garbage collection, whereby any valid data in the block is relocated to a new block. Garbage collection of a block is typically deferred for as long as possible to maximize the amount of invalidated data in block, and thus reduce the number of valid pages that must be relocated, as relocated data causes additional write operations, and thereby increases write amplification.